package matrix;

/**
 * Пустой итератор. Даже если {@linkplain matrix.IRange Область} не пуста, этот итератор сделает её пустой.
 * <p>Полезен разрабам для понимания Конструктора Матричных Игр, когда без итератора не обойтись (например,
 * {@linkplain matrix.CAbstractRange#iterator() iterator()} класса {@linkplain matrix.CAbstractRange CAbstractRange}).
 * @see {@literal Фримен Эр., Фримен Эл., Сьерра К., Бейтс Б. Паттерны проектирования}.
 */
public class CNullIterator implements IRangeIterator {

	@Override
	public boolean hasNext() {
		return false;
	}

	@Override
	public ICell next() {
		return null;
	}

	@Override
	public void remove() {
		throw new UnsupportedOperationException("CNullIterator.remove is not implemented");
	}

	@Override
	public boolean hasNextRow() {
		return false;
	}

	@Override
	public IRange nextRow() {
		return null;
	}

	@Override
	public boolean hasNextColumn() {
		return false;
	}

	@Override
	public IRange nextColumn() {
		return null;
	}

}
